/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package appbastanteo;

import java.util.ArrayList;
import java.util.Date;

/**
 *
 * @author alumnos
 */
public class AdmClientes {

    private ArrayList<Cliente> clientes;

    public AdmClientes() {
        clientes = new ArrayList<Cliente>();
    }

    /**
     * @return the clientes
     */
    public ArrayList<Cliente> getClientes() {
        return clientes;
    }

    /**
     * @param clientes the clientes to set
     */
    public void setClientes(ArrayList<Cliente> clientes) {
        this.clientes = clientes;
    }

    public void registrarCliente(String codigo, String ruc, String razonSocial,
            Date fechaInicio, String tipoEmpresa, int empleados) throws Exception {

        if (clienteExiste(codigo, ruc)) {
            throw new Exception("Cliente ya existe");
        }

        Cliente nuevoCliente = new Cliente(
                codigo, ruc, razonSocial, fechaInicio, tipoEmpresa, empleados);

        if (!verificarDatosRequeridos(nuevoCliente)) {
            throw new Exception("Todos los datos son obligatorios");
        }

        this.clientes.add(nuevoCliente);
    }

    public Cliente obtenerCliente(String codigo) {
        for (Cliente cliente : this.clientes) {
            if (cliente.getCodigo().equals(codigo)) {
                return cliente;
            }
        }
        return null;
    }

    private boolean clienteExiste(String codigo, String ruc) {
        for (Cliente cliente : this.clientes) {
            if (cliente.getCodigo().equals(codigo) || cliente.getRUC().equals(ruc)) {
                return true;
            }
        }
        return false;
    }

    private boolean verificarDatosRequeridos(Cliente nuevoCliente) {
        if (nuevoCliente.getCodigo().isEmpty()
                || nuevoCliente.getRUC().isEmpty()
                || nuevoCliente.getRazonSocial().isEmpty()
                || nuevoCliente.getFechaInicio() == null
                || nuevoCliente.getTipoEmpresa().isEmpty()
                || nuevoCliente.getEmpleados() == 0) {
            return false;
        }
        return true;
    }
}
